自动化渗透测试工具历经多年发展,但真的先进到了不再需要渗透测试人员的程度?
过去几年,网络安全自动化大幅增长,但渗透测试依然免疫,还是依赖渗透测试员人工操作。尽管众包安全在过去10年间已成长为渗透测试的替代选择,却并非基于自动化,不过是在一个问题上投入更多人力而已(而且过程中还会引入其固有的缺陷)。不过,自动化渗透测试工具最近已经发展到了在特定条件下比较有效的程度。于是问题来了:这些工具能够替代渗透测试人员吗?可以对自动化渗透测试工具进行大量对比试验,看能否赶得上渗透测试员的效果和效率;但此类自动化工具的发展堪称现象级,去年做的对照测试分析,今天再来看可能就过时了。所以,以下分析结果,还请各位读者带着发展的眼光看问题。这些工具通过代理或虚拟机交付渗透测试,此类代理或虚拟机模拟渗透测试人员的笔记本电脑和/或接入客户网络的攻击代理。渗透测试机器人程序会侦察其所在环境,执行测试人员都会做的类似扫描:用喜欢的工具执行漏洞扫描,或者就用Nmap或Masscan扫一遍端口和服务。确定自身在环境中所处位置之后,自动化工具会筛选所获信息。从这一步开始,就不再雷同漏洞扫描器了。漏洞扫描器只是简单罗列找到的漏洞和潜在漏洞,并没有关于漏洞可利用程度的上下文。它们不过是照搬通用漏洞与暴露(CVE)参考和通用漏洞评分系统(CVSS)得分而已。有时候漏洞扫描器会贴出系统易受攻击的“证据”,但处理不好误报问题。自动化渗透测试工具则会从这些目标中选择要接管的“最佳”系统,基于漏洞利用难易度、噪音及此类因素做出决策。举个例子,如果渗透测试机器人程序发现某Windows机器易受永恒之蓝攻击,它可能会选择暴力破解要验证密码的开放SSH端口,因为这是广为人知的漏洞利用,利用起来还又快又简单。一旦获得立足点,渗透测试工具就会通过网络扩散,仿照渗透测试人员或攻击者的做法。不同之处在于,自动化渗透测试工具会在被利用的机器上安装自己的代理,以此为支点继续向外辐射。工具会重新展开渗透过程,只不过,这一次会极其仔细地探查机器,收集更多信息,更有针对性地继续在客户网络中的旅程。这一步骤中,渗透工具可能会转储密码哈希,或者查找硬编码的凭证,然后将之纳入下一轮渗透的弹药库。虽然之前可能已经重复过扫描/漏洞利用/跳转,这一次,自动化渗透工具将尝试“哈希传递”攻击,或利用刚刚偷得的密钥连接SSH端口。然后,再次跳转,继续扩散。如果你注意到自动化渗透测试工具的动作与渗透测试人员的操作有很多共同点,那就对了:渗透测试人员基本上就是这么干的(某种程度上,攻击者也是这么干的)。工具集很雷同,用来跳转的技术和方法在很多方面上也很类似。那么,有哪些地方不一样呢?相对于有些年头的渗透测试方法(和混乱的众包方法),自动化具备一些优势。首先,测试和报告的速度大大加快,而且报告的可读性令人惊艳。(经多名合格安全评估师(QSA)验证,这些报告可以满足各种PCI-DSS渗透测试要求。)无需等待渗透测试人员花费数天或数周时间撰写报告并经过几轮质保检查,即可到手清晰明了的渗透测试报告。人工渗透测试目前的主要缺陷之一,就是持续交付意味着很多报告在交付之前就已经过时了。测试之后,环境已历经多次更新,引入了渗透测试之时并不存在的新潜在漏洞和配置错误。这就是传统渗透测试不过是某个时刻的安全态势快照的原因所在。通过每天、每天两次,甚或每次更改后执行一次渗透测试,以及几乎即时交付测试报告,自动化渗透测试工具规避了这一迟滞局限。这意味着你可以日常渗透测试你的环境并检测可能遭利用的配置更改,不用依赖数周以后才交付的报告。自动化的第二个优势在于入口点。你可能会给渗透测试人员一个特定入口点来进入你的网络,但自动化工具就能从多个不同入口点多次执行同样的渗透测试,发现各入口点的弱点,检查各种可能造成影响的场景。虽然理论上人工渗透测试也可以做到这种程度,但每次不同测试都需要投入一大笔预算开销。自动化渗透测试工具也存在弊端。首先,此类工具压根儿不了解Web应用。虽然可以在端口/服务级检测到Web服务器,但自动化渗透测试工具搞不懂是内部API存在不安全直接对象引用(IDOR)漏洞,还是内部网页存在渗透测试人员可利用来进一步跳转的服务器端请求伪造(SSRF)漏洞。自动化渗透测试工具之所以存在这种缺陷,是因为今天的Web技术栈实在太过复杂,即使专业扫描器(例如Web应用扫描器)都难以检测不太好利用的漏洞(例如跨站脚本(XSS)或SQL注入(SQLi))。由此又引出自动化渗透测试工具的另一弱点:你只能在网络“内部”使用这些工具。由于最为暴露的公司基础设施就是基于Web的那些,而自动化渗透测试工具又理解不了这些基础设施,你就仍然需要依靠来自外部的优秀渗透测试人员。自动化渗透测试技术前景广阔,但仍处于早期阶段。尽管暂时还无法替代渗透测试人员,却也有助于应对当今不借助自动化就无法解决的攻击性安全挑战。